package cn.edu.nju.ws.sview.reasoning.provenance;

import java.util.ArrayList;

import cn.edu.nju.ws.sview.rdf.RDFDocument;
import cn.edu.nju.ws.sview.reasoning.GroundAtom;
import cn.edu.nju.ws.sview.reasoning.Rule;

/**
 * @author Gong Saisai
 * provenance construnction factory
 * 
 */
public class ProvenanceFactory {
     private static final ProvenanceFactory instance = new ProvenanceFactory();
     private ProvenanceFactory(){
    	 /*nothing*/
     }
     
     public static ProvenanceFactory  getInstance(){
    	 return instance;
     }
     
     public FromSchemaReasoning createProvFromSchemaReasoning(){
    	 return new FromSchemaReasoning();
     }
     
     public FromDataMembers createProvFromDataMembers(){
    	 return new FromDataMembers();
     }
     
     /**
      * RDF document provenance
      * @param document rdf document
      * @return
      */
     public FromRDFDocument createProvFromRDFDocument(RDFDocument document){
    	 return new FromRDFDocument(document);
     }
     
     /**
      * reasoning provenance
      * @param rule. rule
      * @param groundAtoms.  ground atom
      * @return
      */
     public FromReasoning createProvFromReasoning(Rule rule, ArrayList<GroundAtom> groundAtoms){
    	  return new FromReasoning(rule,groundAtoms);
     }
     
     public FromUserDefinedCoreference createProvFromUserDefinedCoreference(){
    	 return new FromUserDefinedCoreference();
     }
     
     public FromTemporary createProvFromTemporary(){
    	 return new FromTemporary();
     }
}
